doc_target = []

text_filter_properties= [
  ['Blend Example', 'Sans', '24', 'blend'],
  ['Blur', 'Sans:style=bold', '32', 'blur'],
  ['Bump', 'Sans:style=bold', '64', 'bump'],
  ['Curve', 'Sans:style=bold', '64', 'curve'],
  ['Grow - Contour', 'Sans:style=bold', '32', 'grow'],
  ['Mask', 'Sans:style=bold', '64', 'mask'],
  ['Transform - Mirror effect', 'Sans', '50', 'transform'],
]
widget_previews = [
  ['actionslider', 'preview-00.png', 'widget_preview_actionslider', '120', '30'],
  ['bg', 'preview-00.png', 'widget_preview_bg', '50', '50'],
  ['box', 'preview-00.png', 'widget_preview_box', '200', '160'],
  ['bubble', 'preview-00.png', 'widget_preview_bubble1', '160', '50'],
  ['bubble', 'preview-01.png', 'widget_preview_bubble2', '160', '50'],
  ['bubble', 'preview-02.png', 'widget_preview_bubble3', '160', '50'],
  ['button', 'preview-00.png', 'widget_preview_button1', '160', '50'],
  ['button', 'preview-01.png', 'widget_preview_button2', '160', '50'],
  ['button', 'preview-02.png', 'widget_preview_button3', '160', '50'],
  ['calendar', 'preview-00.png', 'widget_preview_calendar', '300', '300'],
  ['check', 'preview-00.png', 'widget_preview_check1', '160', '50'],
  ['check', 'preview-01.png', 'widget_preview_check2', '160', '50'],
  ['check', 'preview-02.png', 'widget_preview_check3', '160', '50'],
  ['clock', 'preview-00.png', 'widget_preview_clock', '200', '100'],
  ['colorselector', 'preview-00.png', 'widget_preview_colorselector', '320', '300'],
  ['conformant', 'preview-00.png', 'widget_preview_conformant', '200', '400'],
  ['combobox', 'preview-00.png', 'widget_preview_combobox', '300', '300'],
  ['ctxpopup', 'preview-00.png', 'widget_preview_ctxpopup', '200', '130'],
  ['datetime', 'preview-00.png', 'widget_preview_datetime1', '360', '60'],
  ['datetime', 'preview-01.png', 'widget_preview_datetime2', '200', '60'],
  ['datetime', 'preview-02.png', 'widget_preview_datetime3', '200', '60'],
  ['dayselector', 'preview-00.png', 'widget_preview_dayselector', '350', '50'],
  ['diskselector', 'preview-00.png', 'widget_preview_diskselector', '120', '50'],
  ['entry', 'preview-00.png', 'widget_preview_entry1', '160', '50'],
  ['entry', 'preview-01.png', 'widget_preview_entry2', '160', '50'],
  ['entry', 'preview-02.png', 'widget_preview_entry3', '160', '50'],
  ['entry', 'preview-03.png', 'widget_preview_entry4', '160', '50'],
  ['fileselector', 'preview-00.png', 'widget_preview_fileselector', '300', '300'],
  ['fileselector_button', 'preview-00.png', 'widget_preview_fileselector_button1', '200', '50'],
  ['fileselector_button', 'preview-01.png', 'widget_preview_fileselector_button2', '200', '50'],
  ['fileselector_button', 'preview-02.png', 'widget_preview_fileselector_button3', '160', '50'],
  ['fileselector_entry', 'preview-00.png', 'widget_preview_fileselector_entry', '70', '50'],
  ['flip', 'preview-00.png', 'widget_preview_flip', '100', '100'],
  ['flipselector', 'preview-00.png', 'widget_preview_flipselector', '100', '60'],
  ['frame', 'preview-00.png', 'widget_preview_frame', '100', '50'],
  ['gengrid', 'preview-00.png', 'widget_preview_gengrid', '200', '160'],
  ['genlist', 'preview-00.png', 'widget_preview_genlist1', '200', '200'],
  ['genlist', 'preview-01.png', 'widget_preview_genlist2', '200', '160'],
  ['genlist', 'preview-02.png', 'widget_preview_genlist3', '200', '160'],
  ['genlist', 'preview-03.png', 'widget_preview_genlist4', '200', '160'],
  ['genlist', 'preview-04.png', 'widget_preview_genlist5', '200', '160'],
  ['hover', 'preview-00.png', 'widget_preview_hover', '90', '170'],
  ['hoversel', 'preview-00.png', 'widget_preview_hoversel', '90', '170'],
  ['icon', 'preview-00.png', 'widget_preview_icon', '50', '50'],
  ['image', 'preview-00.png', 'widget_preview_image', '50', '50'],
  ['index', 'preview-00.png', 'widget_preview_index', '200', '160'],
  ['inwin', 'preview-00.png', 'widget_preview_inwin1', '200', '160'],
  ['inwin', 'preview-01.png', 'widget_preview_inwin2', '200', '160'],
  ['inwin', 'preview-02.png', 'widget_preview_inwin3', '200', '160'],
  ['label', 'preview-00.png', 'widget_preview_label', '70', '30'],
  ['layout', 'preview-00.png', 'widget_preview_layout', '200', '160'],
  ['list', 'preview-00.png', 'widget_preview_list', '200', '200'],
  ['map', 'preview-00.png', 'widget_preview_map', '256', '256'],
  ['mapbuf', 'preview-00.png', 'widget_preview_mapbuf', '200', '200'],
  ['menu', 'preview-00.png', 'widget_preview_menu', '100', '100'],
  ['notify', 'preview-00.png', 'widget_preview_notify', '60', '30'],
  ['panel', 'preview-00.png', 'widget_preview_panel', '150', '50'],
  ['panes', 'preview-00.png', 'widget_preview_panes', '200', '100'],
  ['photocam', 'preview-00.png', 'widget_preview_photocam', '243', '162'],
  ['popup', 'preview-00.png', 'widget_preview_popup', '480', '400'],
  ['prefs', 'preview-00.png', 'widget_preview_prefs', '200', '160'],
  ['prefs', 'preview-00.png', 'widget_preview_prefs', '280', '250'],
  ['progressbar', 'preview-00.png', 'widget_preview_progressbar', '150', '50'],
  ['radio', 'preview-00.png', 'widget_preview_radio', '60', '20'],
  ['scroller', 'preview-00.png', 'widget_preview_scroller', '100', '30'],
  ['segment_control', 'preview-00.png', 'widget_preview_segment_control', '240', '120'],
  ['separator', 'preview-00.png', 'widget_preview_separator', '10', '80'],
  ['slider', 'preview-00.png', 'widget_preview_slider', '200', '100'],
  ['slideshow', 'preview-00.png', 'widget_preview_slideshow', '50', '50'],
  ['spinner', 'preview-00.png', 'widget_preview_spinner', '160', '30'],
  ['table', 'preview-00.png', 'widget_preview_table', '100', '100'],
  ['thumb', 'preview-00.png', 'widget_preview_thumb', '100', '100'],
  ['toolbar', 'preview-00.png', 'widget_preview_toolbar', '300', '100'],
  ['web', 'preview-00.png', 'widget_preview_web', '300', '300'],
  ['win', 'preview-00.png', 'widget_preview_win', '200', '200'],
]

preview_text_filter = executable('preview_text_filter',
  join_paths('previews', 'preview_text_filter.c'),
  include_directories : config_dir,
  dependencies: [ecore_evas],
  build_by_default: false,
)

widget_preview_eps = custom_target('widget_preview_prefs_epc',
  input: join_paths('widgets', 'widget_preview_prefs.epc'),
  output: 'widget_preview_prefs.epb',
  command: elm_prefs_cc_exe + ['@INPUT@', '@OUTPUT@'],
  build_by_default: false,
  depends: [elm_prefs_cc]
)

shot_sh = find_program('shot.sh')
tar = find_program('tar')
foreach text_filter_property : text_filter_properties
  text = text_filter_property[0]
  font = text_filter_property[1]
  size = text_filter_property[2]
  name = text_filter_property[3]
  filter_code = run_command('cat', join_paths(meson.source_root(), 'src', 'examples', 'evas', 'filters', 'filter_'+name+'.lua'))

  doc_target += custom_target('preview_text_filters_'+name,
                  command: [
                    env, 'EFL_RUN_IN_TREE=1',
                    'EFL_EVAS_FILTER_LUA_PREFIX=' + join_paths(meson.source_root(), 'src', 'lib', 'evas'),
                    preview_text_filter.full_path(), text, filter_code.stdout(), '@OUTPUT@', font, size
                  ],
                  depends: preview_text_filter,
                  output:  'filter_'+name+'.png',
                  build_by_default: false
                )
endforeach

foreach widget_preview : widget_previews
  binary = widget_preview[2]

  if get_variable(binary, preview_text_filter) == preview_text_filter
    tmp = executable(binary,
      join_paths('widgets', binary+'.c'),
      dependencies: elementary,
      build_by_default: false,
      c_args : [
        '-DPACKAGE_DATA_DIR="'+join_paths(meson.source_root(), 'data', 'elementary')+'"',
        '-DTESTS_BUILD_DIR="'+meson.current_build_dir()+'"',
        '-DTESTS_SRC_DIR="'+meson.current_source_dir()+'"',
        '-DDOCW_DIR="'+meson.current_build_dir()+'"']
    )
    set_variable(binary, tmp)
  endif
endforeach

#convert = find_program('convert')

foreach widget_preview : widget_previews
  directory = widget_preview[0]
  ss = widget_preview[1]
  binary = widget_preview[2]
  x = widget_preview[3]
  y = widget_preview[4]

  widget_executable = get_variable(binary)

  screen_shot_dir =  join_paths(meson.build_root(), 'html', 'img', 'widget', directory)

  create_preview = custom_target('widget_preview_'+('_'.join([directory, ss, x, y])),
    command: [shot_sh, screen_shot_dir, ss, widget_executable.full_path(), x, y],
    output: '-'.join([directory, ss, x, y]),
    depends: [widget_executable, widget_preview_eps],
    build_by_default: false,
  )
  convert_preview = []
  #
  # This does not work see https://github.com/the-paperless-project/paperless/issues/439 for more details
  # for now this means that no images will be in the latex documentation
  #
  #convert_preview = custom_target('convert_preview_'+('_'.join([directory, ss, x, y])),
  #  command: [convert, join_paths(screen_shot_dir, ss), join_paths(screen_shot_dir, ss.split('.')[0]+'.eps')],
  #  output: '-'.join([directory, ss, x, y])+'.eps',
  #  depends: [create_preview],
  #  build_by_default: false,
  #)
  doc_target += [create_preview, convert_preview]
endforeach

doc_target += custom_target('doxygen',
  command: [doxygen, join_paths(meson.current_build_dir(), 'Doxyfile')],
  output: ['empty'],
  build_by_default: false
)

compress_target = custom_target('package_doc_tar',
  command: [tar, '-C', meson.build_root(), '--xz',  '-cf', 'efl-'+meson.project_version()+'-doc.tar.xz', 'html', 'man'],
  output: 'efl-'+meson.project_version()+'-doc.tar.xz',
  depends: [doc_target],
  build_by_default: false
)

run_target('doc',
  command: ['echo', 'Documentation built successfully'],
  depends: compress_target,
)

doxyfile_conf = configuration_data()
doxyfile_conf.merge_from(config_h)
doxyfile_conf.set('srcdir', meson.current_source_dir())
doxyfile_conf.set('top_builddir', meson.build_root())
doxyfile_conf.set('top_srcdir', meson.source_root())

configure_file(
  input: 'Doxyfile.in',
  output: 'Doxyfile',
  configuration: doxyfile_conf,
)
